package com.jobmineplus.mobile.database; import java.util.ArrayList; import android.content.ContentValues; import android.database.sqlite.SQLiteDatabase; import android.util.Pair; public abstract class DataSourceBase { protected SQLiteDatabase database; // ====================== // Abstract Methods // ====================== public abstract void open(); public abstract void close(); // ====================== // Protected Methods // ====================== protected long updateElseInsert(String table, ArrayList<Pair<String, Object>> where, ContentValues values) { // Unlike insert, update does not throw any errors and it will be faster String whereStr = ""; int i = 0; for (i = 0; i < where.size() - 1; i++) { whereStr += where.get(i).first + "='" + where.get(i).second + "' AND "; } whereStr += where.get(i).first + "=?"; if (!database.isOpen()) { open(); } long affected = database.update(table, values, whereStr, new String[]{where.get(i).second + ""}); if (affected == 0) { affected = database.insertOrThrow(table, null, values); } return affected; } protected void addNonNullValue(ContentValues values, String column, String value) { if (value != null) { values.put(column, value); } } protected void addNonNullValue(ContentValues values, String column, int value) { if (value != 0) { values.put(column, value); } } protected void addNonNullValue(ContentValues values, String column, long value) { if (value != 0) { values.put(column, value); } } }